package nl.weeaboo.sh.danmaku;

public abstract class Spell {

	protected boolean finished;
	
	public Spell() {		
	}
	protected Spell(Spell s) {
		this();
		finished = s.finished;
	}
	
	//Functions
	public abstract Spell clone();	
	
	public void reset() {
		finished = false;
	}
	
	public void run(SpellBook sb, ShotModel s) {
		while (!isFinished()) {
			step(null, sb, s);
		}
	}
	public void step(Universe u, SpellBook sb, ShotModel s) {
		finish();
	}
	protected void finish() { finished = true; }
	
	//Getters
	public boolean isFinished() { return finished; }
	
	//Setters
}
